//函数声明
function func1() {
    for (let i = 0; i < 3; i++) {
        for (let j = 0; j < 3; j++) {
            console.log(i, j);
            if (j === 1) {
                return 0;
            }
        }
    }
}

func1();
console.log("luojinsheng");


function func2() {
    let lineNum1 = 7;
    for (let i = 1; i < lineNum1; i++) {
        let retval = "";
        for (let k = 0; k < lineNum1 - 1 - i; k++) {
            retval += " ";
        }
        for (let j = 0; j < i; j++) {
            retval += "* ";
        }
        console.log(retval);
    }
}

func2();
func2();
func2();
console.log(typeof func2);   //object

//函数表达式
const test = function () {
    console.log("luojinsheng");
}
test();

const test2 = () => {
    console.log("luojinsheng2");
}
test2();

// function func(fuhao, b, c) {
//     let lineNum1 = 7;
//     for (let i = 1; i < lineNum1; i++) {
//         let retval = "";
//         for (let k = 0; k < lineNum1 - 1 - i; k++) {
//             retval += " ";
//         }
//         for (let j = 0; j < i; j++) {
//             retval += a;
//         }
//         console.log(retval);
//     }
// }
// func("* ");
// func("@ ");
// func("# ");


// function add(a, b, c) {
//     console.log(a, b, c);
// }
// add(100);
// add(100, 200, 300, 400);

// function add(a, b, c = 200) {
//     console.log(a, b, c);
// }
// add(100);
// add(100, 200, 300);

// function add(a, c, b = 100) {
//     console.log(a + b + c);
// }
// add(100, 300);

//箭头函数
// const test2 = (a) => {
//     console.log(a);
// }
// test2("luojinsheng");

// const test2 = (a, b, c) => {
//     console.log(a);
// }
// test2("luojinsheng");


// let a = parseInt("100.5");
// console.log(a);

// function add(a, b) {
//     return a + b;
// }
// let retval =  add(100, 200);
// console.log(retval);
//
// // let abc = add;
// // let retval2 =  abc(300, 400);
// // console.log(retval2);
//
// function test() {
//     return add;
// }
// let abc = test();
// let retval2 =  abc(300, 400);
// console.log(retval2);


// function test(a, b, c){
//    return a = 100,
//        b = 200,
//        c = a + b;
// }
// console.log(test());


// const add = (a, b) => {
//     return a + b
// };
// //const add = (a, b) => a + b;
// console.log(add(100, 200));

// const add2 = (a) => {
//     return a
// };
//console.log(add2(100));
// const add2 = a => a;
// console.log(add2(100));


// function fn(b, a){
//     return "" + a + b;
// }
// let a = 100, b = -200;
// console.log(fn(a, b)); //? fn(100, -200)    // "" + -200 + 100 //-200100
// console.log(fn()); //?  // “” + undefined + undefined


// function test(a, b) {
//     let c = 300;
//     d = 400;    //没有以关键字定义的变量，在任何位置都是全局变量（但是不建议这样去写）
//     console.log(a, b, c, d);
// }
// //console.log(d);
// test(100, 200);
// console.log(d);
// test(200, 300);


// let a = 100;
// function test(b){
//     a = 200;
//     b = 300;
//     let c = 400;
//     console.log(a, b, c); //200 300 400
// }
// test();		//?  200 300 400
// console.log(a);	//?   200
// console.log(b);	//?  报错！！


//块级作用域
// {
//     let a = 100;
//     console.log(a);
//     {
//         console.log(a);   //里面的块可以访问外面的块的变量
//         let b = 200;
//         console.log(b);
//     }
// }


// let lineNum1 = 7;
// for (let i = 1; i < lineNum1; i++) {
//     let retval = "";
//     for (let k = 0; k < lineNum1 - 1 - i; k++) {
//         retval += " ";
//     }
//     for (let j = 0; j < i; j++) {
//         retval += "* ";
//     }
//     console.log(retval);
// }


// var跟let的不同：var变量声明提前
// console.log(a);
// var a = 5;
//
// function test(){
//     console.log(b);
//     var b;
// }
// test();


// var a = 5;
// var a = 100;
// console.log(a);


// function func() {
//     console.log("luojinsheng");
// }
// func();
// //...
// var func = 100;
// //...
// func();


// {
//     var a = 100;
//     console.log(a);
//     {
//         console.log(a);
//         var b = 200;
//         console.log(b);
//     }
// }
// console.log(a);


// let d = 400;
// function func() {
//     let c = 300;
//     {
//         let a = 100;
//         console.log(a);
//         {
//             console.log(a);
//             let b = 200;
//             console.log(b);
//         }
//     }
// }


// function func() {
//     console.log("func");
//     function test() {
//         console.log("test");
//         function abc() {
//             console.log("abc");
//         }
//         abc();
//     }
//     test();
// }
// func();


// let a = 101;
// if (a === 100) {
//     var abc = function(){
//         console.log(200);
//     }
// }
// abc();


// function func() {
//     console.log("func");
//     function test() {
//         console.log("test");
//         {
//             function abc() {    //使用函数声明方式定义的函数，没有块级作用域，会提前声明到全局作用域中
//                 console.log("abc");
//             }
//         }
//         abc();
//     }
//     test();
// }
// func();


// function func() {
//     console.log("func");
//     function test() {
//         console.log("test");
//         {
//             let abc = function() {   //用let声明的变量有自己的块级作用域
//                 console.log("abc");
//             }
//         }
//         //abc();
//     }
//     test();
// }
// func();

